package com.hk.commons.poi.excel.metadata;

import com.hk.commons.poi.excel.read.ReadMode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.File;
import java.io.InputStream;
import java.util.Map;


/**
 * excel read parameter
 */
@Getter
@Setter
@Accessors(chain = true)
public class ReadWorkbook {

    /**
     * 从文件中读取
     */
    private File file;

    /**
     * 从流中读取
     */
    private InputStream inputStream;

    /**
     * 标题所在行
     */
    private int titleRow = 0;

    /**
     * 数据开始解析行
     */
    private int sheetStartRow = 1;


    /**
     * 每个Sheet解析的最大行，大于0才限制
     */
    private int sheetMaxRow = 0;

    /**
     * 是否解析所有的工作表
     */
    private boolean parseAllSheet = false;

    /**
     * Excel 文件密码
     */
    private String password;

    /**
     * 开始解析的工作表
     */
    private int startSheetIndex = 0;

    /**
     * 结束解析的工作表，不要小于 {@link #startSheetIndex}
     */
    private int maxSheetIndex = 0;

    /**
     * 是否输出公式结果值
     */
    private boolean outFormulaValue = false;

    /**
     * 是否忽略换行符号
     */
    private boolean ignoreLineBreak;

    /**
     * 是否过滤单元格首尾空字符串
     */
    private boolean autoTrim = true;

    /**
     * 读取ExcelMode
     */
    private ReadMode readMode = ReadMode.SAX;

    private Class<?> beanClass;

    /**
     * Excel的列与属性Mapping，每列对应Bean的哪个属性
     */
    private Map<Integer, String> columnField;

}
